อัพเดทบริการ Amazon Data Firehose ในปี 2024

อัพเดทบริการ Amazon Data Firehose ในปี 2024

บทควาามนี้เกี่ยวกับ Amazon Data Firehose (เดิมชื่อ Amazon Kinesis Data Firehose) ซึ่งเป็นข้อมูล ณ ปี 2024 โปรดใช้บทความนี้เป็นบทความแนะนำบริการ AWS

บทความนี้แปลมาจากบทความภาษาญี่ปุ่นที่ชื่อว่า AWS入門ブログリレー2024〜 Amazon Data Firehose(旧 Amazon Kinesis Data Firehose)編〜 โดยเจ้าของบทความนี้คือ คุณ emi

ภาพรวมของ Amazon Data Firehose

Amazon Data Firehose (ต่อไปนี้จะเรียกย่อว่า Data Firehose) เป็นบริการแบบ fully managed ที่สามารถเก็บรวบรวมและแปลงข้อมูลแบบสตรีมมิ่ง แล้วส่งไปยังแหล่งเก็บข้อมูลสำหรับการวิเคราะห์ เช่น บริการ AWS ที่รองรับและบริการ third-party เนื่องจากมีการปรับขนาดอัตโนมัติตามปริมาณข้อมูลที่เพิ่มขึ้นหรือลดลง ผู้ใช้จึงไม่จำเป็นต้องคำนึงถึงการกำหนดค่าที่ซ้ำซ้อน

Amazon Data Firehose-1

  • S3
  • Redshift
  • OpenSearch Service
  • Splunk
  • Custom HTTP endpoint
  • Datadog
  • Dynatrace
  • New Relic

สามารถส่งข้อมูลไปยังบริการต่างๆ ได้ โดยสามารถดูข้อมูลเพิ่มเติมของปลายทางที่รองรับได้ที่ลิงก์ด้านล่าง

https://docs.aws.amazon.com/firehose/latest/dev/create-name.html

*เมื่อวันที่ 9 กุมภาพันธ์ 2024 ชื่อบริการได้เปลี่ยนจาก Amazon Kinesis Data Firehose เป็น Amazon Data Firehose โดยตัดคำว่า "Kinesis" ออก

https://aws.amazon.com/th/about-aws/whats-new/2024/02/amazon-data-firehose-formerly-kinesis-data-firehose/?nc1=f_ls

fire hose
fire hose หมายถึงสายดับเพลิง ซึ่งเป็นท่อขนาดใหญ่ที่ส่งน้ำจากหัวจ่ายน้ำดับเพลิงไปยังจุดเกิดเหตุ
ในเชิงเปรียบเทียบคือการไหลของข้อมูลจำนวนมาก
โดยเฉพาะไอคอนของ Data Firehose ก็ดูเหมือนสายดับเพลิง เหมือนการฉีดน้ำปริมาณมาก เปรียบเสมือนการส่งสตรีมข้อมูลจำนวนมหาศาลพุ่งออกมา

สถาปัตยกรรมของ Data Firehose

Streaming data คืออะไร

Streaming data คือข้อมูลที่ถูกสร้างขึ้นอย่างต่อเนื่องและต้องประมวลผลแบบเรียลไทม์ ตัวอย่างเช่น โพสต์จากโซเชียลมีเดีย ข้อมูลจากเซ็นเซอร์ IoT และ clickstream data

Firehose Stream

การใช้งาน Data Firehose จะต้องสร้าง Firehose Stream ก่อน จากนั้นจึงส่งข้อมูลไปยัง Firehose Stream ที่สร้างขึ้น
โดย Firehose Stream จะต้องระบุปลายทางการส่งข้อมูลหนึ่งแห่ง

Record

ข้อมูลที่ producer ส่งไปยัง Firehose Stream เรียกว่า “record” ซึ่งมีขนาดสูงสุดคือ 1000 KB

หากขนาดของเรคคอร์ดหนึ่งเกิน 1000 KB จำเป็นต้องทำการบีบอัดหรือแบ่งเรคคอร์ดที่ฝั่งแอปพลิเคชัน หรือใช้ Lambda หรือบริการอื่นๆ ในการประมวลผลแบ่งข้อมูล

(Data) Producer

บริการที่ส่ง record ไปยัง Firehose Stream เรียกว่า producer ตัวอย่างเช่น เว็บเซิร์ฟเวอร์ที่ส่งข้อมูล log ไปยัง Firehose Stream ถือเป็น producer

Buffer Size และ Buffer Interval

Data Firehose จะบัฟเฟอร์ข้อมูลสตรีมมิ่งที่ได้รับจนกว่าจะถึงขนาดที่กำหนดหรือครบระยะเวลาที่กำหนด ก่อนที่จะส่งไปยังปลายทาง

  • Buffer Size
    • Buffer Size ใหญ่: ต้นทุนต่ำ, ความหน่วงสูง
    • Buffer Size เล็ก: ส่งข้อมูลเร็ว, ต้นทุนสูง, ความหน่วงต่ำ
    • ขนาดต่ำสุด: 1 MiB, ขนาดสูงสุด: 128 MiB, ขนาดที่แนะนำ: 5 MiB

Amazon Data Firehose-2

  • Buffer Interval
    • ช่วงเวลานาน: ใช้เวลาเก็บข้อมูลนานขึ้น ทำให้ขนาดข้อมูลใหญ่ขึ้น
    • ช่วงเวลาสั้น: ความถี่ในการส่งข้อมูลสูงขึ้น มีประโยชน์มากขึ้นเมื่อต้องการตรวจสอบกิจกรรมข้อมูลในรอบระยะเวลาสั้นๆ
    • ต่ำสุด: 0 วินาที, สูงสุด: 900 วินาที, แนะนำ: 300 วินาที

Amazon Data Firehose-3

Data Transformation

สามารถเรียกใช้ฟังก์ชัน Lambda เพื่อแปลงข้อมูลและส่งข้อมูลที่แปลงแล้วไปยังปลายทางได้ โดยสามารถเปิดใช้งานการแปลงข้อมูลได้เมื่อสร้าง Firehose Stream

วิธีการใช้งาน

บริการ AWS ที่มีการส่งข้อมูลโดยตรงไปยัง Data Firehose

มีบริการ AWS บางตัว เช่น AWS WAF ที่มีฟีเจอร์การส่งข้อมูลโดยตรงไปยัง Data Firehose อยู่แล้ว

Amazon Data Firehose-4

สามารถเลือก "Amazon Data Firehose" โดยตรงใน management console ได้ตามภาพด้านล่าง

Amazon Data Firehose-7

การส่งข้อมูลจาก CloudWatch Logs ไปยัง Data Firehose

สามารถส่งข้อมูล log ที่ส่งไปยัง CloudWatch Logs ไปยัง Data Firehose ผ่าน CloudWatch Logs Subscription Filter ได้

Amazon Data Firehose-5

การส่งข้อมูลจาก Fluentd ไปยัง Data Firehose

Fluentd เป็นเครื่องมือเก็บรวบรวมและส่งต่อ log แบบ open source ที่มีฟังก์ชันการทำงานสูงและยืดหยุ่น
การใช้ Fluentd ช่วยให้สามารถประมวลผลและส่งข้อมูล log ที่สร้างโดยแอปพลิเคชันและระบบไปยังที่ต่างๆ ได้อย่างมีประสิทธิภาพ

ใน Fluentd สามารถส่ง log ไปยัง Data Firehose Stream โดยตรงได้ด้วยการติดตั้งปลั๊กอิน aws-fluent-plugin-kinesis

Amazon Data Firehose-6

https://github.com/awslabs/aws-fluent-plugin-kinesis

นอกจากนี้ ใน Lab4 ของ Data Lake Hands-on ด้านล่าง สามารถทดลองการส่ง log จาก Fluentd ไปยัง Data Firehose ได้

Amazon Data Firehose-8

*อ้างอิงภาพจาก Data Lake Hands-on

การส่งข้อมูลจาก Fluent Bit ไปยัง Data Firehose

Fluent Bit เป็นเครื่องมือเก็บรวบรวมและส่งต่อ log ที่มีน้ำหนักเบาและประสิทธิภาพสูง สร้างขึ้นบนพื้นฐานของ Fluentd
Fluent Bit สืบทอดฟังก์ชันการทำงานจาก Fluentd แต่ถูกออกแบบให้มีน้ำหนักเบาและใช้ทรัพยากรน้อยกว่า สามารถเก็บรวบรวมและส่ง log ได้อย่างมีประสิทธิภาพแม้ในสภาพแวดล้อมที่มีข้อจำกัดด้านทรัพยากร เช่น สภาพแวดล้อมแบบคอนเทนเนอร์และระบบฝังตัว สามารถตรวจสอบความแตกต่างระหว่าง Fluent Bit และ Fluentd ได้ที่ลิงก์ด้านล่าง
การตั้งค่า Fluent Bit เป็น DaemonSet เพื่อส่ง log ไปยัง CloudWatch Logs - ความแตกต่างในกรณีที่ใช้ Fluentd อยู่แล้ว - Amazon CloudWatch

นอกจากนี้ยังมีบริการที่สร้างขึ้นบนพื้นฐานของ Fluent Bit เพื่อจัดการ log ของคอนเทนเนอร์ เรียกว่า FireLens
FireLens ช่วยให้การจัดการ log ในสภาพแวดล้อม AWS ง่ายขึ้น ด้วยการเพิ่มฟีเจอร์ต่างๆ เช่น การผสานรวมกับบริการ AWS แบบเนทีฟ การทำให้การตั้งค่าง่ายขึ้น การควบคุมการเข้าถึง และการปรับขนาดอัตโนมัติ
โดยสามารถใช้ FireLens เพื่อส่ง log โดยตรงจากคอนเทนเนอร์ ECS ไปยัง Data Firehose ได้

Amazon Data Firehose-9

สำหรับวิธีการตั้งค่าการส่ง log จากคอนเทนเนอร์ ECS ไปยัง Data Firehose โดยใช้ FireLens โปรดดูที่บทความด้านล่าง

https://docs.fluentbit.io/manual/pipeline/outputs/firehose

ค่าบริการ

https://aws.amazon.com/th/firehose/pricing/?nc1=f_ls

ฟังก์ชันหลักของ Data Firehose คือการรับและส่งข้อมูล ค่าบริการหลักเกิดจากการรับข้อมูล ส่วนการส่งข้อมูลจะมีค่าใช้จ่ายเมื่อใช้ฟังก์ชันเสริม เช่น การส่งผ่าน VPC หรือการแบ่งพาร์ทิชันแบบไดนามิก
เนื่องจากค่าบริการแตกต่างกันตามวิธีการรับข้อมูล จึงจะอธิบายแยกตามกรณีต่างๆ ดังต่อไปนี้

1.การรับข้อมูลผ่าน Direct PUT และการใช้ Kinesis Data Streams (KDS) เป็นแหล่งข้อมูล
มีการคิดค่าบริการสำหรับข้อมูลที่รับเข้ามาในหน่วยละ 5KB
ตัวอย่างเช่น เรคคอร์ดขนาด 3KB จะคิดเป็น 5KB และเรคคอร์ดขนาด 12KB จะคิดเป็น 15KB

อ้างอิงราคาสำหรับ Direct PUT ณ ธันวาคม 2024 ในภูมิภาคสิงคโปร์

ขนาดข้อมูลที่นำเข้า ราคาต่อ GB
500 TB แรกต่อเดือน 0.037 USD
1.5 PB ถัดไปต่อเดือน 0.032 USD
3 PB ถัดไปต่อเดือน 0.025 USD
เกิน 5 PB ต่อเดือน กรุณาติดต่อสอบถาม

2.การรับข้อมูลโดยใช้ Amazon MSK (Managed Streaming for Apache Kafka) เป็นแหล่งข้อมูล
ข้อมูลที่รับเข้าจะคำนวณเป็นหน่วย GB โดยใช้จำนวนไบต์ที่มากกว่าระหว่างข้อมูลที่รับเข้ามาหรือข้อมูลที่ส่งออกไป โดยไม่มีการปัดเศษขนาดของเรคคอร์ด

3.การรับข้อมูลโดยใช้ Vended Logs เป็นแหล่งข้อมูล
มีการคิดค่าบริการตามปริมาณข้อมูลที่รับเข้าเป็นหน่วย GB โดยไม่มีการคำนวณเพิ่มในหน่วย 5KB

สรุป

หากกำลังมองหาตัวช่วยในการรับข้อมูลที่มีความยืดหยุ่น Amazon Data Firehose ถือว่าเป็นบริการที่ตอบโจทย์มากที่สุดเพราะสามารถขยายขนาดการรับข้อมูลได้ จึงไม่จำเป็นต้องมาคำนวณในส่วนนี้ และยังทำงานร่วมกับบริการบางตัวของ AWS ได้โดยตรงและบริการ third-party ได้อีกด้วย

บทความที่เกี่ยวข้อง

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.